/**
 * 保存用户文章中所需要的图片
 */

const formidable = require('formidable')
const path = require('path')
const fs = require('fs')

function saveImg(req) {
  let form = new formidable.IncomingForm()
  form.encoding = 'utf-8' // 编码
  form.keepExtensions = true // 保留扩展名
  form.uploadDir = path.join(__dirname, '../public/img/mdImg/') //文件存储路径 最后要注意加 '/' 否则会被存在public下
  return new Promise((resolve, reject) => {
    form.parse(req, (err, fileds, files) => { // 解析 formData 数据  fileds是客户端传上来的数据  files是解析后的数据
      if (err) {
        reject('参数错误')
      } else {
        resolve(files)
      }
    })
  }).then(files => {
    let oldPath = files.images.path //获取文件路径 ~/public/images/<随机生成的文件名>.<扩展名>
    let imgname = files.images.name //前台上传时的文件名 也就是文件原本的名字
    let newPath = path.join(path.dirname(oldPath), imgname)
    return new Promise((resolve, reject) => {
      // 改文件名
      fs.rename(oldPath, newPath, (err) => {
        if (err) {
          reject('服务器返回错误，请稍后再试')
        }
        else {
          resolve('http://127.0.0.1:5000/public/img/mdImg/' + imgname)
        }
      })
    })
  })
}

module.exports = {
  saveImg
}